/********************************************
 * 功能说明: 
 * 模块名称: 
 * 系统名称: 
 * 软件版权: 北京银杉金服科技有限公司
 * 系统版本: 1.0.0
 * 开发人员: zhangfb
 * 开发时间: 2019/1/13 17:20
 * 审核人员: 
 * 相关文档: 
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.server.thread;

import com.hyacinth.server.context.AuroraContext;
import io.netty.util.concurrent.FastThreadLocal;

/**
 * 本地线程变量池
 * @author zhangfb
 * @version 1.0.0.1
 * @since JDK 1.8
 */
public class ThreadLocalHolder {

    /** 当前线程本地时间 **/
    private static final FastThreadLocal<Long> LOCAL_TIME = new FastThreadLocal<>();
    /** 当前线程应用上下文 **/
    private static final FastThreadLocal<AuroraContext> AURORA_CONTEXT= new FastThreadLocal<>() ;

    /**
     * 设置本地时间
     * @param time current time
     */
    public static void setLocalTime(long time){
        LOCAL_TIME.set(time);
    }

    /**
     * 获取本地时间
     * @return get local time
     */
    public static Long getLocalTime(){
        return LOCAL_TIME.get();
    }

    /**
     * 获取并删除本地时间
     * @return get local time
     */
    public static Long getAndRemoveLocalTime(){
        Long time = LOCAL_TIME.get();
        LOCAL_TIME.remove();
        return time;
    }

    /**
     * set Aurora context
     * @param context current context
     */
    public static void setAuroraContext(AuroraContext context){
        AURORA_CONTEXT.set(context) ;
    }

    /**
     * remove Aurora context
     */
    public static void removeAuroraContext(){
        AURORA_CONTEXT.remove();
    }

    /**
     * @return get Aurora context
     */
    public static AuroraContext getAuroraContext(){
        return AURORA_CONTEXT.get() ;
    }

}
